# 自动取款机
# 登陆和退出、查询余额、取钱，存钱

# 初始化存款信息
money_list = [
    {"card_id": 123, "password": 321, "name": "jieyucheng", "amount": 100000},
    {"card_id": 124, "password": 421, "name": "heixiazi", "amount": 2000},
    {"card_id": 125, "password": 521, "name": "feitianyexiang", "amount": 30000}]

# 查询余额
def check_balance(user):
    print("您的账户余额为：", money_list[user]["amount"])

# 退出
def log_out():
    print("您已成功退出系统，再见！")

# 取钱
def draw_money(user):
    amount = int(input("请输入您所需取款金额："))
    if amount > money_list[user]["amount"]:
        # 如果取款金额大于余额，则显示余额，并要求重新输入
        check_balance(user)
        print("您的取款金额超过了您的存款余额，请重新输入！")
        draw_money(user)
    else:
        # 如果取款金额小于等于余额，则成功取款，账户余额减少相应金额
        print("取款成功！")
        money_list[user]["amount"] -= amount
        check_balance(user)

# 存钱
def save_money(user):
    amount = int(input("请输入您所需存款金额："))
    print("存款成功！")
    money_list[user]["amount"] += amount
    check_balance(user)

# 交互界面
def home_page(user):
    print("="*24, "服务项目", "="*24)
    print(" "*5, "{:<25}{:<15}".format("1.余额查询", "2.存款"))
    print(" "*5, "{:<27}{:<15}".format("3.取款", "4.退出系统"))
    print("="*58)
    # 获取用户行为
    action = int(input("请选择需要的服务项目编号："))
    if action == 1:
        check_balance(user)
        home_page(user)
    elif action == 2:
        save_money(user)
        home_page(user)
    elif action == 3:
        draw_money(user)
        home_page(user)
    elif action == 4:
        log_out()
    else:
        print("请输入正确的编号！")
        home_page(user)

# 登录
def log_in(wrong_time):
    # 获取账号和密码
    card_id = int(input("请输入银行卡号："))
    password = int(input("请输入银行卡密码："))
    # 初始化是否找到账号
    find_id = False
    for user, v in enumerate(money_list):
        if card_id == money_list[user]["card_id"]:
            find_id = True
            # 如果找得到该账号，则判断密码是否正确
            if password == money_list[user]["password"]:
                # 如果密码正确，则进入交互页面
                print("用户{}登录成功！".format(money_list[user]["name"]))
                home_page(user)
            else:
                print("密码错误！")
                if wrong_time == 2:
                    # 如果之前已经错误两次，加上现在一共错误三次，则登出
                    print("密码错误达到三次，您即将被系统强制弹出！")
                    log_out()
                else:
                    # 如果错误次数小于三次，则继续登录
                    log_in(wrong_time+1)
    # 如果找不到账号，则要求重新登录
    if not find_id:
        print("银行卡号输入错误！")
        log_in(0)


# 初始界面
print("="*20, "欢迎使用存取款机", "="*20)
# 用户登录，初始错误次数为0
log_in(0)
